// 关于List 的使用
#include <iostream>
#include <list>
#include <algorithm>

using namespace std;

void printLists(const list<int> & l1, const list<int>& l2)
{
    cout << "list 1: " << endl;
    copy(l1.begin(), l1.end(), ostream_iterator<int>(cout, " "));
    
}

int main() {
    std::cout << "Hello, World!" << std::endl;


    list<int> my;
    if (my.size() > 0)
        my.pop_back();
    my.push_back(1);
    my.push_front(2);

    int a = my.front();

    my.pop_front();

    int b = my.front();

    std::cout << a << endl;
    std::cout << b << endl;

    // 产生一个与my相同且同型的list
    // 每个元素都被复制
    list<int> work1(my);
    std::cout << work1.size() << endl;


    //
    list<int> work2(10);
    // 产生一个拥有n个元素的list 这些元素都以default 构造函数初始化
    std::cout << work2.size() <<endl;

    list<int> c(10,20);
    // 产生一个list并以[beg;end]区间内元素为初始值

    list<int> v(10, 20);
    // 产生10 个元素的list , 为个元素都是20个

    std::cout << v.empty() << endl;

    std::cout << v.size() << endl;

    std::cout << v.max_size() << endl;


    v.unique();
    // 如果存在若干个相邻元素而数值相等的元素, 就移除重复的元素, 只留下一个,

    return 0;
}